package povqs2;


import java.awt.Color;
import robocode.*;

public class LeaderBoot extends AbstractBoot {
	
	int timeStep = 0;
	boolean coordenar = true;


	public void run() {

		setColors(Color.orange, Color.black, Color.green);
		setBulletColor(Color.red);

		
		
		while (true) {

			monitoraRadar();
			
			
			if(getOthers() < (getTeammates().length+1) || getTeammates().length < 2){
				coordenar = false;
			}
			

			/*if (pertoParede()) {
				movimentoContrario();
			} else {*/
				
				if(!coordenar){
					
					aleatorioHorizontal(getRadarHeadingDegrees());
					setFrente(200);	
				}
			//}

			execute();
		}

	}
	
	
	
	public void onDeath(DeathEvent e) {
		msgTodosBoots(Msg.MORRI);
	}



	public void onScannedRobot(ScannedRobotEvent e) {

		setaDadosRoboADV(e);
		scanEvent = e;
		timeScan = 0;
		if (!isTeammate(e.getName())) {
			posicionaRadar(e);
			msgTodosBoots(Msg.ATACAR);

			if(!coordenar){
				avancar();
				
			}else if (distRoboAdv <= 50 ) {
				mira(angRobAdv + getGunCharge());
				fogo(distRoboAdv);
			}
		}
	}

	

	public void onHitRobot(HitRobotEvent e) {

		if (!isTeammate(e.getName())) {
			setaDadosRoboADV(e);
			setDireita(e.getBearing());
			mira(angRobAdv + getGunCharge());
			setTraz(50);

			if (distRoboAdv <= 50 && getTeammates().length <= 1) {
				fireBullet(2);
			}
			
		} else {
			
			msgUmBoot(e.getName(), Msg.COLIDIU);

			setFrente(40);
			setEsquerda(e.getBearing());
			
		}
	}

	public void onHitWall(HitWallEvent e) {
		setDireita(e.getBearing());
		setEsquerda(e.getBearing());
		setFrente(50);
	}

	public void onHitByBullet(HitByBulletEvent e) {

		if (isTeammate(e.getName())) {
			msgUmBoot(e.getName(),Msg.ATINGIDO);
		}
		
		if(getEnergy()- e.getPower() <20){
			msgTodosBoots(Msg.MORRI);
		}
		
		desviar(e);

	}

	public void onSkippedTurn(SkippedTurnEvent e) {

		/*setAhead(10);

		if (direita) {

			setTurnLeft(90 - angRobAdv);
			direita = false;

		} else {

			setTurnRight(90 - angRobAdv);
			direita = true;
		}*/

	}

	public void onBulletHit(BulletHitEvent e) {

		// ahead(distRoboAdv);
		// fireBullet(3);
	}

	public void onWin(WinEvent e) {
		setColors(Color.black, Color.white, Color.red);
		dancinha();
	}

	

}
